package cn.edu.xmu.orderpayment.payment.util.paypattern;

import cn.edu.xmu.orderpayment.payment.model.bo.Amount;
import cn.edu.xmu.orderpayment.payment.util.baseobject.*;

import java.time.LocalDate;
import java.util.List;

/**
 * @author zihan zhou
 * @date 2021/12/5
 */
public interface BasePaymentPattern {
    DoPayInfo pay(String outTradeNo, Amount amount, String description) ;
    PaymentInfo getPayment(String outTradeNo);

    void closePayment(String outTradeNo) ;

    void refund(Amount amount, String outTradeNo, String outRefundNo, String reason) ;

    RefundInfo getRefund(String outTradeNo, String outRefundNo) ;

    BillDownloadInfo getBillDownloadUrl(LocalDate billDate);

    List<Transaction> getTransactionsFromCSV(String downloadUrl);
}
